--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Commit 81a6d503a3d897550d0ae78d05e11a87e71f99d7
Parents : c28d3b1
Author : Mark Qvist <mark@unsigned.io>
Date : 2025-10-30T16:55:44+01:00
Automatic legacy PN de-peering
Changes
3 files changed, 14 insertions(+), 15 deletions(-)
Diff
diff --git a/LXMF/Handlers.py b/LXMF/Handlers.py
index 40c416d..5daedd1 100644
--- a/LXMF/Handlers.py
+++ b/LXMF/Handlers.py
@@ -45,13 +45,13 @@ class LXMFPropagationAnnounceHandler:
if self.lxmrouter.propagation_node:
data = msgpack.unpackb(app_data)
if pn_announce_data_is_valid(data):
- metadata = data[0]
- propagation_enabled = data[1]
- node_timebase = int(data[2])
+ node_timebase = int(data[1])
+ propagation_enabled = data[2]
propagation_transfer_limit = int(data[3])
propagation_sync_limit = int(data[4])
propagation_stamp_cost = int(data[5][0])
propagation_stamp_cost_flexibility = int(data[5][1])
+ metadata = data[6]
if destination_hash in self.lxmrouter.static_peers:
self.lxmrouter.peer(destination_hash=destination_hash,
diff --git a/LXMF/LXMF.py b/LXMF/LXMF.py
index a57e31a..6369d69 100644
--- a/LXMF/LXMF.py
+++ b/LXMF/LXMF.py
@@ -150,12 +150,11 @@ def stamp_cost_from_app_data(app_data=None):
def pn_announce_data_is_valid(data):
try:
if type(data) == bytes: data = msgpack.unpackb(data)
- if len(data) < 6: raise ValueError("Invalid announce data: Insufficient peer data")
+ if len(data) < 7: raise ValueError("Invalid announce data: Insufficient peer data")
else:
- if type(data[0]) != dict: raise ValueError("Invalid announce data: Could not decode peer metadata")
- if data[1] != True and data[1] != False: raise ValueError("Invalid announce data: Indeterminate propagation node status")
- try: int(data[2])
+ try: int(data[1])
except: raise ValueError("Invalid announce data: Could not decode peer timebase")
+ if data[2] != True and data[2] != False: raise ValueError("Invalid announce data: Indeterminate propagation node status")
try: int(data[3])
except: raise ValueError("Invalid announce data: Could not decode peer propagation transfer limit")
try: int(data[4])
@@ -165,6 +164,7 @@ def pn_announce_data_is_valid(data):
except: raise ValueError("Invalid announce data: Could not decode peer target stamp cost")
try: int(data[5][1])
except: raise ValueError("Invalid announce data: Could not decode peer stamp cost flexibility")
+ if type(data[6]) != dict: raise ValueError("Invalid announce data: Could not decode peer metadata")
except Exception as e:
RNS.log(f"Could not validate propagation node announce data: {e}", RNS.LOG_DEBUG)
diff --git a/LXMF/LXMRouter.py b/LXMF/LXMRouter.py
index 4f31920..816d949 100644
--- a/LXMF/LXMRouter.py
+++ b/LXMF/LXMRouter.py
@@ -285,14 +285,13 @@ class LXMRouter:
node_state = self.propagation_node and not self.from_static_only
stamp_cost = [self.propagation_stamp_cost, self.propagation_stamp_cost_flexibility]
metadata = {}
- announce_data = [
- metadata, # Node metadata
- node_state, # Boolean flag signalling propagation node state
- int(time.time()), # Current node timebase
- self.propagation_per_transfer_limit, # Per-transfer limit for message propagation in kilobytes
- self.propagation_per_sync_limit, # Limit for incoming propagation node syncs
- stamp_cost, # Propagation stamp cost for this node
- ]
+ announce_data = [ False, # Legacy LXMF PN support
+ int(time.time()), # Current node timebase
+ node_state, # Boolean flag signalling propagation node state
+ self.propagation_per_transfer_limit, # Per-transfer limit for message propagation in kilobytes
+ self.propagation_per_sync_limit, # Limit for incoming propagation node syncs
+ stamp_cost, # Propagation stamp cost for this node
+ metadata ] # Node metadata
data = msgpack.packb(announce_data)
self.propagation_destination.announce(app_data=data)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────